<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');

class Rpt_Matricula extends MN_Controller
{
    
    function __construct() {
        parent::__construct();
        $this->load->database();
        $this->load->helper(array('url', 'form'));
        $this->load->library('ion_auth');
        $this->load->library('session');
        $this->load->model('Periodos_Model');
        $this->load->model('Pensum_Model');
        $this->load->model('Carrera_Model');
        $this->load->model('Ciclos_Model');
        $this->load->model('Reportes_Model');
    }
    
    public function index() {
        
        if (!$this->ion_auth->logged_in() || (!$this->ion_auth->is_admin() && !$this->ion_auth->is_secretary())) {
            $this->session->set_flashdata('message', 'No pertence al grupo de Docentes');
            redirect('auth/login', 'refresh');
        }
        $this->data['user'] = $this->ion_auth->get_user_username();
    }
    
    public function inicio() {
        if (!$this->ion_auth->logged_in() || (!$this->ion_auth->is_admin() && !$this->ion_auth->is_secretary())) {
            $this->session->set_flashdata('message', 'No pertence al grupo de Docentes');
            redirect('auth/login', 'refresh');
        }
        $this->data['user'] = $this->ion_auth->get_user_username();
        
        $this->data['periodos'] = $this->Periodos_Model->getListado();
        
        //$this->data['periodos'] = $this->Periodos_Model->getPeriodoActivo();
        $this->data['carrera'] = $this->Carrera_Model->getListado();
        
        $periodo = $this->uri->segment(3);
        $ide_car = $this->uri->segment(4);
        $ide_pen = $this->uri->segment(5);
        $codigo_cic = $this->uri->segment(6);
        
        //$seccion = $this->uri->segment(7);
        //$paralelo = $this->uri->segment(8);
        
        if (!empty($periodo) && $periodo != - 1) {
            
            //$this->data['periodos'] = $this->Periodos_Model->getListado();
            $this->data['periodo'] = $periodo;
        } 
        else {
            $this->data['periodos'] = $this->Periodos_Model->getListado();
            $this->data['periodo'] = - 1;
            
            //$periodo = $this->data['periodos'][0];
            
            
        }
        
        if (!empty($ide_car) && $ide_car != - 1) {
            $this->data['pensum'] = $this->Pensum_Model->getPensumCarreras($ide_car);
            $this->data['ide_car'] = $ide_car;
            
            //$this->data['ide_pen'] = -1;
            
            
        } 
        else {
            $this->data['ide_car'] = - 1;
        }
        if (!empty($ide_pen) && $ide_pen != - 1) {
            $this->data['ciclo'] = $this->Ciclos_Model->getCiclosPensum($ide_pen);
            $this->data['ide_pen'] = $ide_pen;
        } 
        else {
            $this->data['ide_pen'] = - 1;
        }
        if (!empty($codigo_cic) && $codigo_cic != - 1) {
            
            //$this->data['materias'] = $this->Materia_Model->getMateriaCiclo($codigo_cic);
            $this->data['codigo_cic'] = $codigo_cic;
        } 
        else {
            $this->data['codigo_cic'] = - 1;
        }
        
        
        $this->_render('rpt_matricula/new');
    }
    
    public function procesar() {
        if (!$this->ion_auth->logged_in() || (!$this->ion_auth->is_admin() && !$this->ion_auth->is_secretary())) {
            $this->session->set_flashdata('message', 'No pertence al grupo de Docentes');
            redirect('auth/login', 'refresh');
        }
        $this->data['user'] = $this->ion_auth->get_user_username();
        
        $ide_lec = $this->input->post('ide_lec');
        $ide_car = $this->input->post('ide_car');
        $ide_pen = $this->input->post('ide_pen');
        $ide_ciclo = $this->input->post('codigo_cic');
        $seccion = $this->input->post('seccion');
        $paralelo = $this->input->post('paralelo');
        $this->data['ide_lec'] = $ide_lec;
        $this->data['ide_car'] = $ide_car;
        $this->data['ide_pen'] = $ide_pen;
        $this->data['ide_ciclo'] = $ide_ciclo;
        $this->data['seccion'] = $seccion;
        $this->data['paralelo'] = $paralelo;
        
        if (isset($_POST['listar'])) {
            $seccion = 0;
            $this->data['listar'] = 1;
        }
        
        $this->data['nom_seccion'] = ($seccion == 1 ? "DIURNO" : ($seccion == 2 ? "NOCTURNO" : "FIN DE SEMANA"));
        $sexo_pers = $this->input->post('sexo_pers');
        $autodefin_pers = $this->input->post('autodefin_pers');
        $this->data['sexo_pers'] = $sexo_pers;
        $this->data['autodefin_pers'] = $autodefin_pers;
        
        $arreglo = array();
        
        if ($ide_lec > 0 && $ide_car > 0 && $ide_pen > 0 && $ide_ciclo > 0 && $seccion > 0) {
            $arreglo = $this->Reportes_Model->getMatriculadosPorSemestreCarreraCicloJornada($ide_lec, $ide_car, $ide_pen, $ide_ciclo, $seccion, $paralelo, $sexo_pers, $autodefin_pers);
            if (count($arreglo) > 0) {
                $this->data['nombre_car'] = (!empty($arreglo) ? $arreglo[0]['nombre_car'] : "SIN DATOS");
                $this->data['nombre_cic'] = (!empty($arreglo) ? $arreglo[0]['nombre_cic'] : "SIN DATOS");
                
                $arreglo = $this->orderMultiDimensionalArray($arreglo, 'apellido_pers', false);
                foreach ($arreglo as $key => $pos) {
                    
                    if ($pos['modo_mat'] > 1) {
                        if (!$this->verificar_ciclo($pos['id_matr'], $pos['ide_cic'])) {
                            unset($arreglo[$key]);
                        }
                    }
                }
            }
            
            $this->data['reporte'] = $arreglo;
            
            //print_r($arreglo);
            $this->_render('rpt_matricula/lista1');
        } 
        else {
            
            //if ($ide_lec >0 && $ide_car <0 && $ide_pen<0 && $ide_ciclo<0 && $seccion>0) {
            $arreglo = $this->Reportes_Model->getMatriculadosPorSemestreCarreraCicloJornada($ide_lec, $ide_car, $ide_pen, $ide_ciclo, $seccion, $paralelo, $sexo_pers, $autodefin_pers, 1);
            if (count($arreglo) > 0) {
                $arreglo = $this->orderMultiDimensionalArray($arreglo, 'apellido_pers', false);
                
                //print_r ($arreglo);
                foreach ($arreglo as $key => $pos) {
                    
                    if ($pos['modo_mat'] > 1) {
                        if (!$this->verificar_ciclo($pos['id_matr'], $pos['ide_cic'])) {
                            unset($arreglo[$key]);
                        }
                    }
                }
                
                //echo ($ide_lec.$ide_car.$ide_pen.$ide_ciclo.$seccion);
                if (isset($_POST['listar'])) {
                    $arreglo = $this->orderMultiDimensionalArray($arreglo, 'seccion', false);
                } 
                else {
                    $arreglo = $this->orderMultiDimensionalArray($arreglo, 'nombre_car', false);
                }
            }
            
            $this->data['reporte'] = $arreglo;
            
            //print_r($arreglo);
            
            $this->_render('rpt_matricula/lista2');
        }
        
        //$this->_render('rpt_inscrip/lista1');
        
        
    }
    
    public function imprimir() {
        if (!$this->ion_auth->logged_in() || (!$this->ion_auth->is_admin() && !$this->ion_auth->is_secretary())) {
            $this->session->set_flashdata('message', 'No pertence al grupo de Docentes');
            redirect('auth/login', 'refresh');
        }
        $this->data['user'] = $this->ion_auth->get_user_username();
        
        $ide_lec = $this->input->post('ide_lec');
        $ide_car = $this->input->post('ide_car');
        $ide_pen = $this->input->post('ide_pen');
        $ide_ciclo = $this->input->post('ide_ciclo');
        $seccion = $this->input->post('seccion');
        $paralelo = $this->input->post('paralelo');
        $this->data['ide_lec'] = $ide_lec;
        $this->data['ide_car'] = $ide_car;
        $this->data['ide_pen'] = $ide_pen;
        $this->data['ide_ciclo'] = $ide_ciclo;
        
        if (isset($_POST['listar'])) {
            $seccion = 0;
            $this->data['listar'] = 1;
        }
        
        $this->data['nom_seccion'] = ($seccion == 1 ? "DIURNO" : ($seccion == 2 ? "NOCTURNO" : "FIN DE SEMANA"));
        $sexo_pers = $this->input->post('sexo_pers');
        $autodefin_pers = $this->input->post('autodefin_pers');
        
        $arreglo = array();
        $arreglo = $this->Reportes_Model->getMatriculadosPorSemestreCarreraCicloJornada($ide_lec, $ide_car, $ide_pen, $ide_ciclo, $seccion, $paralelo, $sexo_pers, $autodefin_pers);
        if (count($arreglo) > 0) {
            $this->data['nombre_car'] = (!empty($arreglo) ? $arreglo[0]['nombre_car'] : "SIN DATOS");
            $this->data['nombre_cic'] = (!empty($arreglo) ? $arreglo[0]['nombre_cic'] : "SIN DATOS");
            
            $arreglo = $this->orderMultiDimensionalArray($arreglo, 'apellido_pers', false);
            foreach ($arreglo as $key => $pos) {
                
                if ($pos['modo_mat'] > 1) {
                    if (!$this->verificar_ciclo($pos['id_matr'], $pos['ide_cic'])) {
                        unset($arreglo[$key]);
                    }
                }
            }
        }
        
        $this->data['reporte'] = $arreglo;
        $html = $this->load->view('rpt_matricula/lista', $this->data, true);
        $path = $this->dompdf_lib->createPDF($html, 'myfilename', false);
        $this->data['path'] = $path;
        $this->_render('rpt_matricula/reporte');
        
        //$this->_render('rpt_inscrip/lista1');
        
        
    }
    
    function orderMultiDimensionalArray($toOrderArray, $field, $inverse = false) {
        $position = array();
        $newRow = array();
        foreach ($toOrderArray as $key => $row) {
            $position[$key] = $row[$field];
            $newRow[$key] = $row;
        }
        if ($inverse) {
            arsort($position);
        } 
        else {
            asort($position);
        }
        $returnArray = array();
        foreach ($position as $key => $pos) {
            $returnArray[] = $newRow[$key];
        }
        return $returnArray;
    }
    public function prueba() {
        $this->verificar_ciclo(1901, 1);
    }
    
    public function verificar_ciclo($id_matr, $ide_cic) {
        $ciclo = array(array('ciclo' => 1, 'cant' => 0, 'id' => 0), array('ciclo' => 2, 'cant' => 0, 'id' => 0), array('ciclo' => 3, 'cant' => 0, 'id' => 0), array('ciclo' => 4, 'cant' => 0, 'id' => 0), array('ciclo' => 5, 'cant' => 0, 'id' => 0), array('ciclo' => 6, 'cant' => 0, 'id' => 0));
        
        $arreglo = $this->Reportes_Model->getCantidadMateriasCicloPorMatricula($id_matr);
        
        //print_r($arreglo);
        //foreach($ciclo as $item){
        for ($i = 0; $i < 6; $i++) {
            
            //echo $item['ciclo'];
            //echo $item['cant'];
            //echo $item['id'];
            $cont = 0;
            
            foreach ($arreglo as $row) {
                if ($ciclo[$i]['ciclo'] == intval($row['codigo_cic'])) {
                    $cont++;
                    
                    //echo $cont;
                    $ciclo[$i]['cant'] = $cont;
                    $ciclo[$i]['id'] = $row['ide_cic'];
                }
            }
        }
        
        //echo "<br>".$ide_cic;
        $ciclo = $this->orderMultiDimensionalArray($ciclo, 'cant', TRUE);
        
        //print_r($ciclo);
        $ide_c = 0;
        if ($ciclo[0]['cant'] > $ciclo[1]['cant']) {
            
            //echo "<br/>".$ciclo[0]['id'].' - '.$ciclo[0]['ciclo'];
            $ide_c = $ciclo[0]['id'];
        } 
        elseif ($ciclo[0]['cant'] == $ciclo[1]['cant']) {
            
            //echo $ciclo[0]['ciclo']. $ciclo[1]['ciclo'];
            $ide_c = ($ciclo[0]['ciclo'] > $ciclo[1]['ciclo'] ? $ciclo[0]['id'] : $ciclo[1]['id']);
            
            //if($ciclo[0]['ciclo']>$ciclo[1]['ciclo']){
            //echo "<br/>".$ciclo[0]['id'].' - '.$ciclo[0]['ciclo'];
            //    $ide_c=$ciclo[0]['id'];
            
            //}
            
            
        }
        
        //echo $ide_c;
        if ($ide_cic != $ide_c) {
            return FALSE;
        } 
        else {
            return TRUE;
        }
        
        //print_r($ciclo);
        
        
    }
    public function ProcesarTodos() {
        
        if (!$this->ion_auth->logged_in() || (!$this->ion_auth->is_admin() && !$this->ion_auth->is_secretary())) {
            $this->session->set_flashdata('message', 'No pertence al grupo de Docentes');
            redirect('auth/login', 'refresh');
        }
        $this->data['user'] = $this->ion_auth->get_user_username();
        
        $ide_lec = $this->uri->segment(3);
        $mallacursa = $this->Reportes_Model->getMallaCursaPeriodo($ide_lec);
        $resumen=array();
        
        foreach ($mallacursa as $key => $row) {
            $ide_car = $row['ide_car'];
            $ide_pen = $row['ide_pen'];
            $ide_ciclo = $row['ide_cic'];
            $seccion = $row['seccion'];
            $paralelo = $row['paralelo'];
            
            //print_r($row);
            $arreglo = $this->Reportes_Model->getMatriculadosPorSemestreCarreraCicloJornada($ide_lec, $ide_car, $ide_pen, $ide_ciclo, $seccion, $paralelo, '', '', 1);
            if (count($arreglo) > 0) {
                $arreglo = $this->orderMultiDimensionalArray($arreglo, 'apellido_pers', false);
                
                //print_r ($arreglo);
                foreach ($arreglo as $key => $pos) {
                    
                    if ($pos['modo_mat'] > 1) {
                        if (!$this->verificar_ciclo($pos['id_matr'], $pos['ide_cic'])) {
                            unset($arreglo[$key]);
                        }
                    }
                }
                
                //echo ($ide_lec.$ide_car.$ide_pen.$ide_ciclo.$seccion);
                $arreglo = $this->orderMultiDimensionalArray($arreglo, 'nombre_car', false);
                $titulo = false;
                    $s_h = 0;
                    $s_m = 0;
                    $retirados=0;
                    $s_materias=0;
                    $nombre_car="";
                    $nombre_cic="";
                    $seccion="";
                    $paralelo="";
                    



                foreach ($arreglo as $key => $fila) {
                    if (!$titulo) {
                        $nombre_car=$fila['nombre_car'];
                        $nombre_cic=$fila['nombre_cic'];
                        $paralelo=($fila['paralelo']);
                        $seccion=($fila['seccion'] == 1 ? "DIURNA" : ($fila['seccion'] == 2 ? "NOCTURNA" : "FIN SEMANA"));
                        $titulo = true;
                    }
                    $retirados+=($fila['estado_matr']==5?1:0);
                    $s_h = $s_h + ($fila['sexo_pers'] == "HOMBRE" ? 1 : 0);
                    $s_m = $s_m + ($fila['sexo_pers'] == "MUJER" ? 1 : 0);
                    $s_materias=$s_materias+($fila['modo_mat'] ==5 ? 1 : 0); //por materias

                    
                    //print_r($fila);
                    
                    
                    
                }
                $res_carr=array(
                        "nombre_car"=>$nombre_car,
                        "nombre_cic"=>$nombre_cic,
                        "seccion"=>$seccion,
                        "paralelo"=>$paralelo,
                        "hombre"=>$s_h,
                        "mujeres"=>$s_m,
                        "retirados"=>$retirados,
                        "por_materias"=>$s_materias);
                $resume[]=$res_carr;

                //echo ("******* hombre:$s_h mujeres:$s_m retirados:$retirados");
                //echo ('<br> ====================== <br>');
            }
            
            // code...
            
            
        }

        //print_r($resume);
        $periodos= $this->Periodos_Model->getDatosPeriodo($ide_lec);

        $this->data['nombre_per'] = $periodos[0]['descripcion_lec'];
        $this->data['ide_lec']=$ide_lec;
        $this->data['reporte']=$resume;
        
        $html = $this->load->view('rpt_matricula/resumen', $this->data, true);
        $path = $this->dompdf_lib->createPDF($html, 'myfilename1', false);

        

        $this->data['path'] = $path;
        

        $this->load->view('rpt_matricula/vista',$this->data);
        //$this->_render('rpt_matricula/resumen');


        
        //$this->_render('rpt_inscrip/lista1');
        
        
    }
}
